package com.itheima.threadDemo.Demo12;

import java.util.concurrent.ArrayBlockingQueue;

public class Demo12 {
    public static void main(String[] args) {
        //创建box对象
        Box box = new Box();
        //定义天数
        int day = 30;
        //启动生产者线程
        new Thread(() -> {
            synchronized (box) {
                for (int i = 1; i <= 30; i++) {
                    if (box.isFlag()) {//如果有奶那就等待睡觉
                        try {
                            box.wait();
                            i--;
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        //如果没有那就送牛奶
                    } else {
                        //生产,放一瓶
                        box.put(i);
                        //把标记改为ture
                        box.setFlag(true);
                        //叫醒少爷
                        box.notifyAll();
                    }
                }
            }
        }).start();
        //启动消费者线程
        new Thread(() -> {
            //创建一个计数器当计数器与喝的牛奶相同时候停止
            int count = 0;
            while (true) {


                synchronized (box) {
                    if (count == day) {
                        break;
                    }
                    if (box.isFlag()) {//如果为真那就吃
                        box.take();
                        //吃完把状态修改为false
                        box.setFlag(false);
                        //在将送奶的喊过来
                        box.notifyAll();
                    } else {//如果没有牛奶那就睡觉等着
                        try {
                            box.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }).start();
    }
}

